home *** CD-ROM | disk | FTP | other *** search
/ Eagles Nest BBS 8 / Eagles_Nest_Mac_Collection_Disc_8.TOAST / Developer Environments / TurPasDBTlbx / TP-Database Toolbox / Turbo Access / TAHigh.unit < prev   
Encoding:
Text File  |  1987-12-11  |  5.9 KB  |  239 lines  |  [TEXT/TPAS]

  1. (*********************************************************************)
  2. (*                  Turbo Pascal Database Toolbox                    *)
  3. (*                       For the Macintosh                           *)
  4. (*            Copyright (C) 1987 Borland International               *)
  5. (*                     Toolbox version: 1.0                          *)
  6. (*                                                                   *)
  7. (*               TURBO ACCESS HIGH-LEVEL UNIT                        *)
  8. (*                                                                   *)
  9. (*        Purpose: Toolbox of high-Level Turbo Access routines.      *)
  10. (*                 Simplifies programming databases that have        *)
  11. (*                 one data file and one index file.                 *)
  12. (*                                                                   *)
  13. (*        Uses the Turbo Access Unit                                 *) 
  14. (*                                                                   *)
  15. (*********************************************************************)
  16. unit TAHigh(8);
  17. interface
  18. {$U-}
  19. {$U TAccess}
  20. uses MemTypes, QuickDraw, OSIntF, ToolIntf, PackIntf, PasInOut, TAccess;
  21.  
  22. const
  23. { The following constants can be used to specify search conditions 
  24.   for procedure TARead. }
  25.   ExactMatch    = true;
  26.   PartialMatch  = false;
  27.  
  28. type 
  29.   DataSet = record
  30.                Data : DataFile;
  31.                Index : IndexFile;
  32.             end;
  33. var
  34.   TARecNum : LongInt;
  35. { Number of the last accessed record in the database. You can
  36.   use this variable to build upon the high level calls, say
  37.   by adding a second index file. }
  38.     
  39.  
  40. procedure TAClose(var DatSet : DataSet);
  41.  
  42. procedure TACreate(var DatSet : DataSet; 
  43.                    DatFName : string; RecordLen : integer;
  44.                    IndexFName : string; KeyLen : integer);
  45.  
  46. procedure TADelete(var DatSet : DataSet; var Key);
  47.  
  48. procedure TAErase(var DatSet : DataSet);
  49.  
  50. procedure TAInsert(var DatSet : DataSet; var CurRec, Key);
  51.  
  52. procedure TANext(var DatSet : DataSet; var CurRec, Key);
  53.  
  54. procedure TAOpen(var DatSet : DataSet; 
  55.                  DatFName : string; RecordLen : integer;
  56.                  IndexFName : string; KeyLen : integer);
  57.  
  58. procedure TAPrev(var DatSet : DataSet; var CurRec, Key);
  59.  
  60. procedure TARead(var DatSet : DataSet; var CurRec, Key ; 
  61.                  FindExact : boolean);
  62.  
  63. procedure TAReset(var DatSet : DataSet);
  64.  
  65. procedure TAUpdate(var DatSet : DataSet; var CurRec, Key);
  66.  
  67. procedure TAWrite(var DatSet : DataSet; var CurRec, Key);
  68.  
  69. implementation
  70.  
  71. procedure TAClose{var DatSet : DataSet};
  72. begin
  73.   UserProc := 'TAClose';
  74.   with DatSet do
  75.   begin
  76.     CloseIndex(Index);
  77.     CloseFile(Data);
  78.   end;
  79.   UserProc := '';
  80. end; { TAClose }
  81.  
  82. procedure TACreate{var DatSet : DataSet; 
  83.                    DatFName : string; RecordLen : integer;
  84.                    IndexFName : string; KeyLen : integer};
  85. begin
  86.   UserProc := 'TACreate';
  87.   FillChar(DatSet, SizeOf(DatSet), 0);
  88.   with DatSet do
  89.   begin
  90.     MakeFile(Data, DatFName, RecordLen);
  91.     if Ok then
  92.       MakeIndex(Index, IndexFName, KeyLen, 0);
  93.   end;
  94.   UserProc := '';
  95. end; { TACreate }
  96.  
  97. procedure TADelete{var DatSet : DataSet; var Key};
  98. begin
  99.   UserProc := 'TADelete';
  100.   with DatSet do
  101.   begin
  102.     FindKey(Index, TARecNum, Key);
  103.     if Ok then
  104.     begin
  105.       DeleteRec(Data, TARecNum);
  106.       DeleteKey(Index, TARecNum, Key);
  107.     end;
  108.   end;
  109.   UserProc := '';
  110. end; { TADelete }
  111.  
  112. procedure TAErase{var DatSet : DataSet};
  113. begin
  114.   UserProc := 'TAErase';
  115.   with DatSet do
  116.   begin
  117.     EraseIndex(Index);
  118.     EraseFile(Data);
  119.   end;
  120.   UserProc := '';
  121. end; { TAErase }
  122.  
  123. procedure TAInsert{DatSet : DataSet; var CurRec, Key};
  124. var
  125.   temp : String;
  126. begin
  127.   if UserProc = '' then
  128.     UserProc := 'TAInsert';
  129.   temp := Str255(Key);
  130.   with DatSet do
  131.   begin
  132.     FindKey(Index, TARecNum, temp);
  133.     Ok := not Ok;
  134.     if not Ok then
  135.       Exit;
  136.     AddRec(Data, TARecNum, CurRec);
  137.     AddKey(Index, TARecNum, Key);
  138.   end;
  139.   if UserProc = 'TAInsert' then
  140.     UserProc := '';
  141. end; { TAInsert }
  142.  
  143. procedure TANext{var DatSet : DataSet; var CurRec, Key};
  144. begin
  145.   UserProc := 'TANext';
  146.   with DatSet do
  147.   begin
  148.     NextKey(Index, TARecNum, Key);
  149.     if Ok then
  150.       GetRec(Data, TARecNum, CurRec);
  151.   end;
  152.   UserProc := '';
  153. end; { TANext }
  154.  
  155. procedure TAOpen{var DatSet : DataSet; 
  156.                  DatFName : string; RecordLen : integer;
  157.                  IndexFName : string; KeyLen : integer};
  158. begin
  159.   UserProc := 'TAOpen';
  160.   FillChar(DatSet, SizeOf(DatSet), 0);
  161.   with DatSet do
  162.   begin
  163.     OpenFile(Data, DatFName, RecordLen);
  164.     if Ok then
  165.       OpenIndex(Index, IndexFName, KeyLen, 0);
  166.   end;
  167.   UserProc := '';
  168. end; { TAOpen }
  169.  
  170. procedure TAPrev{var DatSet : DataSet; var CurRec, Key};
  171. begin
  172.   UserProc := 'TAPrev';
  173.   with DatSet do
  174.   begin
  175.     PrevKey(Index, TARecNum, Key);
  176.     if Ok then
  177.       GetRec(Data, TARecNum, CurRec);
  178.   end;
  179.   UserProc := '';
  180. end; { TAPrev }
  181.  
  182. procedure TARead{var DatSet : DataSet; var CurRec, Key ; 
  183.                  FindExact : boolean};
  184. var
  185.   S : String;
  186. begin
  187.   UserProc := 'TARead';
  188.   with DatSet do
  189.   begin
  190.     if FindExact then
  191.       FindKey(Index, TARecNum, Key)
  192.     else
  193.     begin
  194.       S := Str255(Key);
  195.       SearchKey(Index, TARecNum, Key);
  196.       if Ok then
  197.         Ok := Pos(S, Str255(Key)) > 0;
  198.     end;
  199.     if Ok then
  200.       GetRec(Data, TARecNum, CurRec);
  201.   end;
  202.   UserProc := '';
  203. end; { TARead }
  204.  
  205. procedure TAReset{var DatSet : DataSet};
  206. begin
  207.   with DatSet do
  208.     ClearKey(Index);
  209. end; { TAReset }
  210.  
  211. procedure TAUpdate{var DatSet : DataSet; var CurRec, Key};
  212. begin
  213.   if UserProc = '' then
  214.     UserProc := 'TAUpdate';
  215.   with DatSet do
  216.   begin
  217.     FindKey(Index, TARecNum, Key);
  218.     if Ok then
  219.       PutRec(Data, TARecNum, CurRec);
  220.   end;
  221.   if UserProc = 'TAUpdate' then
  222.     UserProc := '';
  223. end; { TAUpdate }
  224.  
  225. procedure TAWrite{var DatSet : DataSet; var CurRec, Key};
  226. begin
  227.   UserProc := 'TAWrite';
  228.   with DatSet do
  229.   begin
  230.     TAInsert(DatSet, CurRec, Key);
  231.     if not Ok then
  232.       TAUpdate(DatSet, CurRec, Key);
  233.   end;  
  234.   UserProc := '';
  235. end; { TAWrite }
  236.  
  237. begin
  238.   TARecNum := 0;
  239. end. { TAHigh.unit }